//package com.groupseven.happycampus.common.exception;
//
//import com.groupseven.happycampus.common.result.R;
//import com.groupseven.happycampus.common.result.ResultCodeEnum;
//import org.springframework.http.HttpStatus;
//import org.springframework.stereotype.Component;
//import org.springframework.web.bind.MissingServletRequestParameterException;
//import org.springframework.web.bind.annotation.ControllerAdvice;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.ResponseStatus;
//
///**
// * @BeLongsProject: wangrihui
// * @BeLongsPackage: com.wrh.common.exception
// * @Author: WRH
// * @CreateTime: 2022-07-22 10:19
// * @Description: TODO
// * @Version: 1.0
// */
//@Component
//@ControllerAdvice   // 对Controller 进行增强
//@ResponseBody
//public class CustomExceptionResolver {
//
//    /**
//     * 自定义异常
//     * @param ex CustomException
//     * @return
//     *
//     * 当Controller 出现 自定义异常的时候 触发这个方法执行
//     */
//    @ExceptionHandler(CustomerException.class)
//    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
//    public R handleHttpMessageNotReadableException(
//            CustomerException ex) {
//        return R.error();
//    }
//
//
//    /**
//     * 除零异常
//     * @param ex ArithmeticException
//     * @return
//     */
//    @ExceptionHandler(ArithmeticException.class)
//    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
//    public R handleHttpMessageNotReadableException(
//            ArithmeticException ex) {
//
//        return R.error().code(445).message("除零异常");
//    }
//
//    /**
//     * 缺少请求参数异常
//     * @param ex MissingServletRequestParameterException
//     * @return
//     */
//    @ExceptionHandler(MissingServletRequestParameterException.class)
//    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
//    public R handleHttpMessageNotReadableException(
//            MissingServletRequestParameterException ex) {
//        return R.error().code(446).message("缺少请求参数异常");
//    }
//
//    /**
//     * 系统异常 预期以外异常
//     * @param ex
//     * @return
//     *
//     * 项目中，我们一般都会比较详细的去拦截一些常见异常，拦截 Exception 虽然可以一劳永逸，
//     * 但是不利于我们去排查或者定位问题。实际项目中，可以把拦截 Exception 异常写在 GlobalExceptionHandler
//     * 最下面，如果都没有找到，最后再拦截一下 Exception 异常，保证输出信息友好。
//     */
//    @ExceptionHandler(Exception.class)
//    @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
//    public R handleUnexpectedServer(Exception ex) {
//        ex.printStackTrace();
//        return R.setResult(ResultCodeEnum.UNKNOWN_REASON);
//    }
//
//}